昨天我們在本地電腦成功跑出了第一個 Flask 後端,看到了經典的 SubWise Backend is running!。但如果只留在本地,LINE 的伺服器是無法存取我們電腦中的 127.0.0.1 的。
為了讓 SubWise 能在雲端運作,今天 Day 03 的目標非常明確:學習 Git 版本控制、將程式碼託管至 GitHub,並一鍵自動部署至 Render 免費雲端平台!今天這一步,讓我真正體會到了現代軟體開發中「持續整合與部署(CI/CD)」的魅力。
在剛接觸開發時,常常會想:「為什麼不能直接把檔案傳到 Render?」經過今天的實作才明白,業界標準的開發架構是這樣的:
[ 本地 VS Code ] ──(Git Commit)──► [ GitHub 倉庫 ] ──(Auto Deploy)──► [ Render 雲端 ]
git push 到 GitHub,Render 就會自動抓取最新版本並重新部署,完全不需要手動上傳檔案!在 Terminal 執行 git init 開啟版本控制。身為開發者,保護敏感資訊是第一要務!我們必須確保昨天申請到的 API Key(.env)與龐大的虛擬環境(venv/)不會被公開,因此在 .gitignore 檔案中確認並追加忽略設定:
venv/
.env
pycache/
*.pyc
.vscode/ # 新增:忽略本地編輯器設定檔,保持 Repository 乾淨
確認 git status 排除了敏感檔案後,執行 git add . 與 git commit -m "Day 03: Initialize SubWise Flask project",成功留下人生第一個版本快照!
實作結果呈現:
在 GitHub 上建立一個新的 Public 倉庫 subwise-line-bot(保持乾淨,不安裝預設 README),綁定遠端地址並將本地分支改名為標準的 main:
git remote add origin https://github.com/ashley191919/subwise-line-bot.git
git branch -M main
git push -u origin main
實作結果呈現:
在準備部署至 Render 時,遇到了一個常見的大坑:本地開發監聽
127.0.0.1:5000,但雲端平台會動態分配PORT,且必須監聽0.0.0.0!
在 ChatGPT 的引導下,我們將 app.py 的進入點進行了優化:
from flask import Flask, jsonify
import os
app = Flask(__name__)
@app.route("/")
def home():
return jsonify({
"status": "success",
"message": "SubWise Backend is running!"
})
if __name__ == "__main__":
# 讀取雲端分配的 PORT,若在本地則預設使用 5000
port = int(os.environ.get("PORT", 5000))
# host="0.0.0.0" 允許外部網路與 LINE Webhook 連線
app.run(host="0.0.0.0", port=port)
修改後重新提交 git add . → git commit → git push 更新 GitHub。
使用 GitHub 帳號登入 Render,建立新的 Web Service 並 Connect 剛剛的 subwise-line-bot 倉庫,關鍵設定如下:
pip install -r requirements.txt
python app.py
點擊 Deploy Web Service!幾分鐘後,Log 秀出了 Your service is live !點開分配到的 HTTPS 公開網址,成功看到了回傳的 JSON 測試訊息:
{
"message": "SubWise Backend is running!",
"status": "success"
}
實作結果呈現:
雲端後端心臟已經順利在網路上跳動了!明天 Day 04,我們將把這個 Render 網址綁定到 LINE Developers 的 Webhook,實現「在 LINE 發送訊息,雲端 Flask 伺服器即時回應」的第一次真正互動!我們明天見!